![]() |
![]() |
|
Änderungen, die an den Einstellungen vorgenommen werden, wirken sich auf das PageSettings-Objekt aus. Etwas unglücklich ist im Dialog die Handhabung der Einstellung der Ränder gelöst. In Abbildung 23.3 können Sie sehen, dass die Beschriftung suggeriert, es handle sich bei den Einstellungen und der Anzeige Links, Rechts, Oben und Unten um Angaben in Millimeter. Das ist nur teilweise richtig. Nehmen Sie Änderungen vor, schließen den Dialog mit OK und öffnen ihn danach erneut, haben sich die Einträge geändert. Die Einträge, auch wenn Sie sie nicht geändert haben, werden als Millimeterangaben interpretiert und per Vorgabe in Zoll umgerechnet. Nur wenn Sie auf Abbrechen klicken, wird die Umrechnung nicht erfolgen. In unseren Breitengraden, in denen das metrische System bevorzugt wird, sollten Sie zur Vermeidung dieses Effekts unbedingt die Eigenschaft EnableMetric=True einstellen. Die Umrechnung bei Bestätigung mit OK wird dadurch vermieden, und es wird nach dem erneuten Öffnen des Dialogs der gleiche Wert angezeigt. Jetzt handelt es sich wirklich um Millimeterangaben. 23.5.4 Das »PrintPreviewDialog«-Steuerelement
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Private Sub mnuDruckvorschau_Click(...) |
| PrintPreviewDialog1.Document = PrintDocument1 |
| If PrintPreviewDialog1.ShowDialog() = _ |
| Windows.Forms.DialogResult.OK Then |
| PrintDocument1.Print() |
| End If |
| End Sub |

Hier klicken, um das Bild zu Vergrößern
Abbildung 23.4 Das »PrintPreviewDialog«-Steuerelement
Während das Steuerelement PrintPreviewDialog im Komponentenfach abgelegt wird, weil es nicht in der Form angezeigt wird, ist das nun vorzustellende Steuerelement PrintPreviewControl ein herkömmliches, das zur Laufzeit der Anwendung für den Anwender sichtbar ist und den Bereich der Seitenvorschau anzeigt. Der Vorteil im Vergleich zu PrintPreviewDialog ist, dass Sie damit eine Seiten- bzw. Druckvorschau nach eigenen Vorstellungen realisieren können, die weit über das hinausgeht, was das Steuerelement PrintPreviewDialog anbietet.
Das Steuerelement ist ein direkter Nachfahre der Klasse Control und erbt die Member dieser Basisklasse. Die meisten werden Sie aber zur Programmierung, die ansonsten denkbar einfach ist, nicht benötigen. Sieben spezifische Eigenschaften zeichnen dieses Steuerelement aus, die wir uns alle ansehen wollen.
Die Wichtigste ist die schon bekannte Eigenschaft Document. Solange dieser kein PrintDocument-Objekt zugewiesen wird, kann das PrintPreviewControl nichts anzeigen.
Ein Dokument kann aus mehr als nur einer Seite bestehen. Diesem Thema werden wir uns später noch eingehend widmen. Wenn mehrere Dokumentseiten im Ansichtsbereich angezeigt werden sollen, müssen Sie in den Eigenschaften Rows und Columns angeben, wie viele Reihen und Spalten gleichzeitig dargestellt werden sollen. Standardmäßig sind beide Eigenschaften auf den Wert 1 eingestellt.
Mit der Eigenschaft Zoom kann die Darstellung einer Seite verkleinert oder vergrößert werden. Die volle Größe eines Dokuments entspricht dem Wert 1.0, der Standardwert ist 0,3. Eine Veränderung des Wertes von Zoom bewirkt, dass die Eigenschaft AutoZoom auf False gesetzt wird. Weist diese Eigenschaft True auf, wird die Seitenvorschau des Dokuments so angepasst, dass es noch im Anzeigebereich des Steuerelements dargestellt werden kann.
Die Eigenschaft StartPage gibt bei mehreren anzuzeigenden Seiten die Nummer der ersten Seite an. Dabei steht 0 für die erste Seite. UseAntiAlias dient wie schon beim PrintPreview-Dialog zum Glätten von Schriften.
| Eigenschaft | Beschreibung |
| AutoZoom | Legt fest, ob die angezeigte Größe des Dokuments so angepasst wird, dass der gesamte verfügbare Bereich ausgefüllt wird. |
| Columns | Sollen mehrere Dokumente des Druckjobs gleichzeitig angezeigt werden, legt diese Eigenschaft die Anzahl der Spalten dafür fest. |
| Document | Gibt an, aus welchem Druckjob (PrintDocument) die Druckinformationen bezogen werden sollen. |
| Rows | Sollen mehrere Dokumente des Druckjobs gleichzeitig angezeigt werden, legt diese Eigenschaft die Anzahl der Zeilen dafür fest. |
| StartPage | Die Eigenschaft gibt bei mehreren anzuzeigenden Seiten die Nummer der ersten Seite an. |
| UseAntiAlias | Mit der Einstellung True werden Schriften geglättet. Die Anzeige wird besser, allerdings verbunden mit einer Verschlechterung der Performance. |
| Zoom | Steuert die Verkleinerung/Vergrößerung des angezeigten Dokuments. |
Einen eigenen Dialog zur Seitenvorschau zu programmieren erfordert nicht besonders viel Programmcode und reduziert sich auf einige wenige Zeilen, wie im folgenden Beispiel zu sehen ist.
| ' ---------------------------------------------------------- |
| ' Beispiel:...\Kapitel 23\Drucken |
| ' ---------------------------------------------------------- |
| Public Class Form1 |
| ' allgemeine Zeichenroutine zum Zeichnen in die PictureBox |
| ' und zur Druckerausgabe |
| Private Sub DrawGraphic(ByVal g As Graphics, _ |
| ByVal x1 As Integer, ByVal y1 As Integer, _ |
| ByVal x2 As Integer, ByVal y2 As Integer) |
| Dim p As Pen = New Pen(Color.Black) |
| For i As Integer = x1 To x2 Step 20 |
| g.DrawLine(p, x1, y1, i, y2) |
| Next |
| For i As Integer = x2 To x1 Step –20 |
| g.DrawLine(p, x2, y1, i, y2) |
| Next |
| End Sub |
| Private Sub PictureBox1_Paint(...) Handles PictureBox.Paint |
| Me.DrawGraphic(e.Graphics, 0, 0, _ |
| PictureBox.ClientSize.Width, _ |
| PictureBox.ClientSize.Height) |
| End Sub |
| Private Sub PrintDocument1_PrintPage(...) _ |
| Handles PrintDocument1.PrintPage |
| Me.DrawGraphic(e.Graphics, e.MarginBounds.X, _ |
| e.MarginBounds.Y, e.MarginBounds.Width _ |
| + e.MarginBounds.X, e.MarginBounds.Height + _ |
| e.MarginBounds.Y) |
| End Sub |
| Private Sub mnuDrucken_Click(...) Handles mnuDrucken.Click |
| If PrintDialog1.ShowDialog() = _ |
| Windows.Forms.DialogResult.OK Then |
| PrintDocument1.Print() |
| End If |
| End Sub |
| Private Sub mnuSeiteEinrichten_Click(. ) _ |
| Handles mnuSeiteEinrichten.Click |
| PageSetupDialog1.ShowDialog() |
| End Sub |
| Private Sub mnuDruckvorschau_Click(...) _ |
| Handles mnuDruckvorschau.Click |
| If PrintPreviewDialog1.ShowDialog() = _ |
| Windows.Forms.DialogResult.OK Then |
| PrintDocument1.Print() |
| End If |
| End Sub |
| Private Sub mnuUserDeffPrintPreview_Click(...) _ |
| Handles mnuUserDeffPrintPreview.Click |
| Dim frm As New Form2 |
| frm.PrintPreviewControl1.Document = PrintDocument1 |
| frm.ShowDialog() |
| End Sub |
| End Class |
| ' Druckvorschaufenster (benutzerdefiniert) |
| Public Class Form2 |
| Private Sub btnGroesser_Click(...) _ |
| Handles btnGroesser.Click |
| Try |
| PrintPreviewControl1.Zoom += 0.05 |
| Catch |
| End Try |
| End Sub |
| Private Sub btnKleiner_Click(...) _ |
| Handles btnKleiner.Click |
| Try |
| PrintPreviewControl1.Zoom -= 0.05 |
| Catch |
| End Try |
| End Sub |
| Private Sub btnAuto_Click(...) Handles btnAuto.Click |
| PrintPreviewControl1.AutoZoom = True |
| End Sub |
| End Class |

Hier klicken, um das Bild zu Vergrößern
Abbildung 23.5 Das Hauptfenster des Beispiels »Drucken«

Hier klicken, um das Bild zu Vergrößern
Abbildung 23.6 Der Dialog der erweiterten Druckvorschau
| << zurück |
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
|
||||||||||||||
Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die
gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.